热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

拥护者|蠢事_编程语言是都一样的,吗?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了编程语言是都一样的,吗?相关的知识,希望对你有一定的参考价值。 目录 编程语言是都一样的,吗? 是的,编程语

篇首语:本文由编程笔记#小编为大家整理,主要介绍了编程语言是都一样的,吗?相关的知识,希望对你有一定的参考价值。


目录

编程语言是都一样的,吗?

是的,编程语言都不一样

语言越高级就越好,吗?

繁多变种编程语言的衍生





编程语言是都一样的,吗?

 “编程语言都差不多的,会一种就等于全部”。这完全是一派胡言,所谓的 “触类旁通“ 不见得有效。毕竟各种语言是天差地别!


是的,编程语言都不一样


我们的讨论是基于高级语言的,绝大多数程序员在绝大多数时候都使用高级语言编程,现在很少有人使用汇编语言。程序员的时间要比计算机的时间昂贵得多,后者已经变得很便宜了,所以几乎不值得非常麻烦地用汇编语言开发软件。只有少数最关键的部分可能还会用到汇编语言,比如开发某个计算机游戏时,你需要在微观水平控制硬件,使得游戏速度得到最大限度的终极提高。

Fortran、Lisp、Cobol、Basic、C、Pascal、Smaltalk、C++、Java、Perl 和 Python,全都是高级语言。它们只是比较出名的几种而已。现在的高级语言大概有几百种之多。不同机器语言的指令集基本相同,但是高级语言就不一样、它们开发程序的模式差别相当大。那么,应该使用哪一种语言?

嗯,关于这个问题,现在有很多争论,部分原因是,如果你长期使用某种语言,你就会慢慢按照这种语言的思维模式进行思考。所以,后来当你遇到其他任何一种有重大差异的语言,即使那种语言本身并没有任何不对的地方,你也会觉得它极其难用。

缺乏经验的程序员对于各种语言优缺点的判断经常被这种心态误导,可能因为想炫耀自己见多识广,其些同行会告诉你所有高级语言基本相似。“所有编程语言我都用过”,某个看上去饱经风霜又酷的同行往酒吧里一坐,“你用什么语言并不重要,重要的是你对问题是否有正确的理解。代码以外的东西才是关键”。

这当然是一派胡言,各种语言简直是天差地别。比如 FortranI 和最新版的Perl 就是两种完全不同的语言,而早期版的 Perl 和最新版的 Perdl 之间的差别也大得惊人。但是,那个夸夸其谈的同行可能真的相信自己的这番话,的确有可能使用所有不同的语言写出了与用原始的 Pascal 语言写的差不多的程序。因为如果你吃过麦当劳,就会知道全世界各地的麦当劳的味道都几乎一样。


有些同行只喜欢自己用的语言,反感其他所有的语言。另一些同行则说所有的语言都一样。事实介于这两个极端之间。语言之间确实有差别,但是很难确定地说哪一种语言是最好的,因为这个领域依然还在快速发展。


语言越高级就越好,吗?


从表达性上讲,高级语言比汇编语言更接近人类语言,又比其他语言更进一步。举例来说,C 语言是一种低层次语言,很接近硬件,几乎堪称可移植的汇编语言,而 Lisp 语言的层次则是相当高,如果高层级语言比汇编语言更有利于编程,你也许会认为语言的层次越高越好。一般情况下确实如此,但不是绝对的。编程语言可以变得很抽象、完全脱离硬件,但也有可能走错了方向。比如,我觉得 Prolog 语言就有这个问题。它的抽象能力强得不可思议,但是只能用来解决 2% 的问题,其余时间你苦思冥想、运用这些抽象能力写出来的程序实际上就是 Pascal 语言的程序。


如果你非常关注运行速度,那么最好使用接近机器的语言。这时你会用到低层次语言的原因就是效率问题。大多数操作系统都是用 C 语言写的,这并非偶然。不过,硬件的运行速度越来越快了,所以使用 C 这样的低层次语言开发应用程序的必要性正在不断减少,但是大家似乎还是要求操作系统越快越好。



繁多变种编程语言的衍生


不同变种编程语言的衍生,表现着设计者的不同初衷,及各种分歧的解答方案。

语言设计者之间的最大分歧也许就在于,有些人认为编程语言应该防止程序员干蠢事,另一些人则认为程序员应该可以用编程语言干一切他们想干的事。Java 语言是前一个阵营的代表,Per 语言则是后一个阵营的代表。

由于防止程序员做蠢事有好几种方法,所以上面的争论逐渐分化成几个较小的议题。目前最活跃的议题之一就是静态类型语言与动态类型语言之争。在静态类型语言中,写代码时必须知道每个变量的类型,而在动态类型语言中,随便什么时候,你都可以把变量设为任意类型的值。

静态类型语言的拥护者认为这样可以防止 bug,并且帮助编译器生成更快的代码(这两点理由都成立)。动态类型语言的拥护者认为静态类型对程序构成了限制(这点理由也成立)。我本人更喜欢动态类型,痛恨那些限制我的自由的语言。但是,确实有一些很聪明的人看来喜欢用静态类型语言。所以,这个问题依然值得讨论,并没有固定答案。



推荐阅读:

|Kafka 高吞吐、高性能核心技术及最佳应...

|高并发服务中的智能流控...

|Mysql 数据库优化秘籍...

|数据库分库分表可扩展及数据倾斜/热点问题...

|五分钟搭建基于Prometheus+Grafana实时监控...


推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • php中次方怎么表示(2023年最新解答)
    导读:今天编程笔记来给各位分享关于php中次方怎么表示的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
author-avatar
淼淼L玖兰枢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有